package com.zc.common.validator;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * <p>Description : </p>
 *
 * @author : xuhongcao
 * @version : v1.0.0
 * @since : 31/3/2022
 **/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD})
public @interface ValidField {

    /**
     * 是否可以为null
     *
     * @return
     */
    boolean isNull() default false;

    /**
     * 作用域字符串的最大长度
     *
     * @return
     */
    int minLength() default 0;

    int maxLength() default 0;

    /**
     * 字符串定长
     *
     * @return
     */
    int fixedLength() default 0;

    /**
     * 数字大小验证
     *
     * @return
     */
    double minNumber() default 0;

    double maxNumber() default 0;

    /**
     * 提示销售
     *
     * @return
     */
    String msg() default "";

    /**
     * 提供几种常用的正则验证
     *
     * @return
     */
    RegexType regexType() default RegexType.NONE;

    String regexExpression() default "";

    /**
     * 数组最大长度
     *
     * @return
     */
    int maxSize() default Integer.MAX_VALUE;

    /**
     * 数组最小长度
     *
     * @return
     */
    int minSize() default 0;
}
